<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 08-03-2015
class Clase extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las clases activas o inactivas pero NO las borradas segun los filtros aplicados.
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todas las clases existentes del ciclo vigente de la asignatura seleccionada
	//Si idCicloLectivo es distinto de cero, hay que mostrar todas las clases del ciclo en cuestion de la asignatura seleccionada.
	//Ultima verificación: 24/09/2014
	function consultar($idCicloLectivo=null, $idAsignatura=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para la asignatura.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idAsignatura) && $idAsignatura>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para corroborar que exista
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura
				$restriccion = " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para la asignatura. Que la asignatura sea dictada por el docente.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0) && ($asignacion->num_rows() == 1 || $idAsignatura==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado.
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado.
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id de la asignatura para que la seleccione en el combo de filtrado
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las asignaturas para buscar las dictadas por el docente
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					//Restriccion de la persona logueada. En este caso un docente
					$restriccion .= " AND persona.idPersona=".$this->session->userdata('idPersonaLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todas ellas
					$this->load->model('m_asignacion_docente');
					
					//Busco todas las asignaturas segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscarActivos($restriccion);
					
					//Le paso el listado de todas las asignaciones a la vista para que los muestre en un combo de filtrado
					$datos['asignaciones'] = $listadoAsignaciones;					
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de clases segun la asignatura seleccionada
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion2 = "";
					
					//Restriccion segun la asignatura seleccionada
					$restriccion2 = " AND clase.idAsignatura=".$idAsignatura;
					
					//Cargo el modelo donde estan los datos de las clases registradas para pedirle un listado con todas ellas segun las restricciones
					$this->load->model('m_clase');
					
					//Busco todas las clases segun las restricciones correspondientes, tanto activas como inactivas, menos las borradas(-1)
					$listadoClases = $this->m_clase->buscar($restriccion2);
					
					//Le paso el listado de todas las clases a la vista para que los muestre en una tabla
					$datos['clases'] = $listadoClases;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de clases y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_clases', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar la clase pasada por la url
	//El segundo y tercer parametro indica el criterio para filtrar las clases en el resultado
	function eliminar($idClase=null, $idCicloLectivo=null, $idAsignatura=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idClase pasado sea numerico y mayor que cero. Ademas que idCicloLectivo e idAsignatura pasados sean numerico y mayor que cero.
			if(is_numeric($idClase) && $idClase>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>0 && is_numeric($idAsignatura) && $idAsignatura>0){
				//Cargo el modelo donde estan los datos de las clases registradas
				$this->load->model('m_clase');
				
				//Busco a la clase que hay que eliminar para corroborar que exista
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para corrobar que exista
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura y clase
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que la clase exista. Ademas que el ciclo lectivo y asignatura pasados por la url sean existentes. Que la asignatura sea dictada por el docente.
				if($clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Elimino a la clase pasada por la url
					$respuesta = $this->m_clase->eliminar($idClase, $this->session->userdata('idUsuarioLog'));
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado.
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado.
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id de la asignatura para que la seleccione en el combo de filtrado
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las asignaturas para buscar las dictadas por el docente
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}
					
					//Restriccion de la persona logueada. En este caso un docente
					$restriccion .= " AND persona.idPersona=".$this->session->userdata('idPersonaLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todas ellas
					$this->load->model('m_asignacion_docente');
					
					//Busco todas las asiganturas segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscarActivos($restriccion);
					
					//Le paso el listado de todas las asignaciones a la vista para que los muestre en un combo de filtrado
					$datos['asignaciones'] = $listadoAsignaciones;					
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de clases segun la asignatura seleccionada
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion2 = "";
					
					//Restriccion segun la asignatura seleccionada
					$restriccion2 = " AND clase.idAsignatura=".$idAsignatura;
					
					//Cargo el modelo donde estan los datos de las clases registradas para pedirle un listado con todas ellas segun las restricciones
					$this->load->model('m_clase');
					
					//Busco todas las clases segun las restricciones correspondientes, tanto activas como inactivas, menos las borradas(-1) que quedaron
					$listadoClases = $this->m_clase->buscar($restriccion2);
					
					//Le paso el listado de todas las clases a la vista para que los muestre en una tabla
					$datos['clases'] = $listadoClases;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de clases
					$this->load->view('v_clases', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Abre la pantalla con el formulario para crear una clase nueva.
	//Los parametros se utilizan para seleccionar el ciclo o asignatura en los combos.
	function abrirPantallaCrear($idCicloLectivo=null, $idAsignatura=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idCicloLectivo e idAsignatura pasados sean numerico y mayor o igual que cero.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idAsignatura) && $idAsignatura>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para corroborar que exista
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura
				$restriccion = " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para la asignatura. Que la asignatura sea dictada por el docente.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0) && ($asignacion->num_rows() == 1 || $idAsignatura==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el del que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$datos['hashSel'] = random_string('alnum',20);
					
					//Le paso a la vista el id de la asignatura para que la seleccione en el combo de filtrado
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las asignaturas para buscar las dictadas por el docente
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}
					
					//Restriccion de la persona logueada. En este caso un docente
					$restriccion .= " AND persona.idPersona=".$this->session->userdata('idPersonaLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todas ellas
					$this->load->model('m_asignacion_docente');
					
					//Busco todas las asignaturas segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscarActivos($restriccion);
					
					//Le paso el listado de todas las asignaciones a la vista para que las muestre en un combo seleccionable
					$datos['asignaciones'] = $listadoAsignaciones;
					
					//Cargo la vista donde se muestra el formulario para crear una clase y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_clases_crear', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro seleccionado no existe
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea realmente la clase. La respuesta se muestra en un iframe dentro del formulario
	function crear($hash=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que se haya pasado por la url el hash de la clase a crear para saber a que contenidos educativos hay que setearle.
			//Ademas que se haya pasado por post el ciclo lectivo, asignatura, fecha de publicacion, nombre y el estado de la clase a crear.
			if($hash != "" && strlen($hash) == 20 && is_numeric($this->input->post('cicloLectivo',true)) && $this->input->post('cicloLectivo',true)>0 && is_numeric($this->input->post('asignatura',true)) && $this->input->post('asignatura',true)>0 && $this->input->post('fechaPublicacion',true)!="" && $this->input->post('nombre',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($this->input->post('cicloLectivo',true));
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($this->input->post('asignatura',true));
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura
				$restriccion = " AND asignatura.idAsignatura=".$this->input->post('asignatura',true)." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente. Lo mismo para la asignatura. Que el docente dicte la asignatura.
				if($cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Cargo el modelo donde estan los datos de las clases
					$this->load->model('m_clase');
					
					//Formato fecha ARGENTINA
					$fecha1=$this->input->post('fechaPublicacion',true);
					//Formato fecha EEUU
					if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
					else $fecha2=null;
					
					//Creamos la clase
					$resultado = $this->m_clase->crear($this->input->post('asignatura',true), $fecha2, $this->input->post('nombre',true), $this->input->post('descripcion',true), $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
					
					if($resultado == 1){
						$ultimoIdInsertado = $this->db->insert_id();
						
						//Cargo el modelo donde estan los datos de los contenidos educativos
						$this->load->model('m_contenido_educativo');
						
						//Activamos todos los contenidos educativos que creamos en el formulario CREAR CLASE
						$resultado = $this->m_contenido_educativo->activar($ultimoIdInsertado, $hash, 1);
						
						//Cargo el modelo donde estan los datos del timeline para cargar la novedad.
						$this->load->model('m_timeline');
						
						//Creamos el registro de la novedad. TipoOperacion, idTablaOrigen, idRegistroOrigen, idTablaDestino, idRegistroDestino, fechaPasada, fechaFutura, estado
						$this->m_timeline->crear(1, 5, $ultimoIdInsertado, 11, $asignatura->row()->idDivision, $fecha2, null, 1);
						
						echo("<script> alert('La clase: ".$this->input->post('nombre',true)." se ha creado correctamente.');</script>");
					}else{
						echo("<script> alert('La clase: ".$this->input->post('nombre',true)." no se ha creado. Ha habido un error.');</script>");
					}
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();			
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();			
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos de la clase pasada por la url.
	//El segundo y tercer parametro solo se utilizan para volver a la pantalla consultar con el mismo criterio de filtrado o bien para avanzar o retroceder al siguiente registro.
	function abrirPantallaModificar($idClase=null, $idCicloLectivo=null, $idAsignatura=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){
			//Segunda comprobacion: Que idClase pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor que cero. Lo mismo para idAsignatura.
			if(is_numeric($idClase) && $idClase>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>0 && is_numeric($idAsignatura) && $idAsignatura>0){
				//Cargo el modelo donde estan los datos de las clases registradas
				$this->load->model('m_clase');
				
				//Busco a la clase que hay que modificar para comprobar que existe
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura y clase
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$idAsignatura." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que la clase sea existente. Ademas que el ciclo lectivo y asignatura sean existenets. Ademas que la clase haya sido dictada por la persona logueada.
				if($clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1 && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Le paso la clase a modificar a la vista
					$datos['claseSel'] = $clase;
					
					//Le paso la clase, el ciclo lectivo y asignatura que estaban seleccionados en la pantalla consultar
					$datos['idClaseSel'] = $idClase;
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Busco a la clase siguiente de la que hay que modificar
					$idClaseSig = $this->m_clase->getContiguo($idClase,1, $idAsignatura);
					
					//Le paso la clase siguiente de la que hay que modificar a la vista
					$datos['idClaseSig'] = $idClaseSig;
					
					//Busco la clase anterior de la que hay que modificar
					$idClaseAnt = $this->m_clase->getContiguo($idClase,-1, $idAsignatura);
					
					//Le paso la clase anterior de la que hay que modificar a la vista
					$datos['idClaseAnt'] = $idClaseAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las asignaturas para buscar las dictadas por el docente
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					
					//Restriccion al ciclo lectivo
					$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					
					//Restriccion de la persona logueada. En este caso un docente
					$restriccion .= " AND persona.idPersona=".$this->session->userdata('idPersonaLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todos ellos
					$this->load->model('m_asignacion_docente');
					
					//Busco todas las asignaturas segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscarActivos($restriccion);
					
					//Le paso el listado de todas las asignaciones a la vista para que los muestre en un combo seleccionable
					$datos['asignaciones'] = $listadoAsignaciones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los contenidos educativos
					$this->load->model('m_contenido_educativo');
					
					//Busco todos los contenidos educativos activos
					$listadoContenidosEducativos = $this->m_contenido_educativo->buscarActivosEtapa2(" AND contenidoeducativo.idClase='".$idClase."'");
					
					//Le paso el listado de todos los contenidos educativos a la vista para que las muestre en una tabla
					$datos['contenidosEducativos'] = $listadoContenidosEducativos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo la vista donde se muestra el formulario para modificar una clase y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_clases_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar un registro
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de una clase.
	function modificar($idClase=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDocente') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por la url el id de la clase a modificar.
			//Ademas que se haya pasado por post el ciclo lectivo, asignatura, fecha de publicacion, nombre y el estado de la clase a modificar.
			if(is_numeric($idClase) && $idClase>0 && is_numeric($this->input->post('cicloLectivo',true)) && $this->input->post('cicloLectivo',true)>0 && is_numeric($this->input->post('asignatura',true)) && $this->input->post('asignatura',true)>0 && $this->input->post('fechaPublicacion',true)!="" && $this->input->post('nombre',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de las clases
				$this->load->model('m_clase');
				
				//Busco a la clase que hay que modificar para comprobar que existe
				$clase = $this->m_clase->get($idClase);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($this->input->post('cicloLectivo',true));
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($this->input->post('asignatura',true));
				
				//Cargo el modelo donde estan los datos de las asignaturas dictadas por los docentes
				$this->load->model('m_asignacion_docente');
				
				//Armo la restriccion para buscar si la persona logueada dicta esta asignatura y clase
				$restriccion2 = "";
				if($clase->num_rows() == 1){
					$restriccion2 = " AND asignatura.idAsignatura=".$clase->row()->idAsignatura;
				}
				
				$restriccion = $restriccion2 . " AND asignatura.idAsignatura=".$this->input->post('asignatura',true)." AND persona.idPersona=".$this->session->userdata('idPersonaLog');
				
				//Busco si el docente dicta la asignatura pasada por la url
				$asignacion = $this->m_asignacion_docente->buscarActivos($restriccion);
				
				//Tercera comprobacion: Que la clase pasada por la url sea existente. Lo mismo para el ciclo lectivo y la asignatura. Ademas que la clase sea dictada por la persona logueada.
				if($clase->num_rows() == 1 && $cicloLectivo->num_rows() == 1  && $asignatura->num_rows() == 1 && $asignacion->num_rows() == 1){
					//Formato fecha ARGENTINA
					$fecha1=$this->input->post('fechaPublicacion',true);
					//Formato fecha EEUU
					if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
					else $fecha2=null;
					
					//Modificamos la clase
					$resultado = $this->m_clase->modificar($idClase, $this->input->post('asignatura',true), $fecha2, $this->input->post('nombre',true), $this->input->post('descripcion',true), $this->input->post('estado',true));
					
					if($resultado == 1){
						//Cargo el modelo donde estan los datos del timeline para cargar la novedad.
						$this->load->model('m_timeline');
												
						//Creamos el registro de la novedad. TipoOperacion, idTablaOrigen, idRegistroOrigen, idTablaDestino, idRegistroDestino, fechaPasada, fechaFutura, estado
						$this->m_timeline->crear(2, 5, $idClase, 11, $asignatura->row()->idDivision, $fecha2, null, 1);
						
						echo("<script> alert('La clase: ".$this->input->post('nombre',true)." se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('La clase: ".$this->input->post('nombre',true)." no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
}